package ihm;

import java.awt.*;
import java.util.Date;

import javax.swing.*;

import visualisationRadar.VisualisationRadar;


public class IhmRadar {
	private VisualisationRadar visualisationRadar;
	private PanneauAppli panneauImage;
	//VisuZoom panneauZoom;
	private FenetreZoom fenetreZoom;/*fenetre du zoom*/
	JFrame frame;
	BarreMenu menu;
	
	public IhmRadar(VisualisationRadar visualisationRadar){
		this.visualisationRadar=visualisationRadar;
		//visualisationRadar.ajouteIhm(this);
		frame=new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JPanel panneau=new JPanel();
		panneau.setPreferredSize(new Dimension(VisualisationRadar.NBPIXELS,800));
		panneau.setBackground(Color.GRAY);
		panneau.setLayout(new BorderLayout());
		panneauImage=new PanneauAppli(visualisationRadar,VisualisationRadar.NBPIXELS,680);
		panneau.add(panneauImage,BorderLayout.CENTER);
		PanneauCommandes panneauCommandes = new PanneauCommandes(visualisationRadar);
		panneau.add(panneauCommandes,BorderLayout.SOUTH);/*menu du bas*/
		panneauImage.addMouseMotionListener(panneauCommandes);
		menu = new BarreMenu(visualisationRadar); /*menu du haut*/
		panneau.add(menu,BorderLayout.NORTH);
		
		//VisuZoom panneauZoom = new VisuZoom();
		fenetreZoom= new FenetreZoom(visualisationRadar);
		fenetreZoom.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
		panneauImage.addMouseMotionListener(fenetreZoom);
		panneauImage.addMouseListener(fenetreZoom);
		fenetreZoom.setAlwaysOnTop(true);
		frame.add(panneau);

		frame.setBackground(Color.LIGHT_GRAY);
		frame.setTitle("Lame d'eau");
		frame.setSize(532,800);
		frame.setLocation(15,15);
		frame.pack();
		frame.setVisible(true);
	}

	public void repeindre() {
		if (panneauImage.isPluvios() && 
				visualisationRadar.getObjetRadar().getImageRadar().getPluviometres()==null){
			System.err.println("pas de pluvios : "+
					visualisationRadar.getObjetRadar().getImageRadar().getNomFichier()+" absent");
			panneauImage.setPluvios(false);
			menu.setPluviosSelected(false);
		}

		panneauImage.repaint();
		if (fenetreZoom.isVisible()) //&& radar.getObjetRadar().getImageRadar().getPixels()!=null)
			fenetreZoom.repeindre();
	}
	
	public void setFond(boolean fond) {
		panneauImage.setFond(fond);
		repeindre();
	}

	public void setPointRadar(boolean pRadar) {
		panneauImage.setPointRadar(pRadar);
		repeindre();
	}
	
//	public void setZoom(boolean fond) {
//		fenetreZoom.setZoom(fond);
//		repeindre();
//	}
	
	public void saveGraphics(String nomJpeg) {
		panneauImage.saveGraphics(nomJpeg);
	}

	public boolean getFond() {
		return panneauImage.getFond();
	}
	public boolean getPointRadar() {
		return panneauImage.getPointRadar();
	}

	public void zoomer(boolean b) {
		fenetreZoom.setVisible(b);
	}

	public boolean isZoom() {
		return fenetreZoom.isVisible();
	}
	
	public boolean getChoixZoom() {
		// TODO Auto-generated method stub
		return fenetreZoom.getChoixZoom();
	}

	public int getZoomX() {
		// TODO Auto-generated method stub
		return fenetreZoom.getZoomX();
	}

	public int getZoomY() {
		// TODO Auto-generated method stub
		return fenetreZoom.getZoomY();
	}

	public Date getDateCumul() {
		DialogueChoixCumul fenetreChoixCumul=new DialogueChoixCumul(visualisationRadar.getObjetRadar().getImageRadar().getDate());
		return fenetreChoixCumul.getDateDebut();
	}
	
	public void setPluvios(boolean b) {
		panneauImage.setPluvios(b);
		//TODO menu.setPluviosSelected(b);
		repeindre();
	}
	
	public boolean isPluvios() {
		return panneauImage.isPluvios();
	}

	public int getProfondeur() {
		DialogueChoixCumul fenetreChoixCumul=new DialogueChoixCumul(visualisationRadar.getObjetRadar().getImageRadar().getDate());
		return fenetreChoixCumul.getProfondeur();
	}

	public void demandeInfosComparaison() {
		DialogueChoixComparaison fenetreChoix=new DialogueChoixComparaison();
		visualisationRadar.donneInfosComparaison(fenetreChoix.isBiais(),fenetreChoix.isEqm(),fenetreChoix.getMinQualite(),fenetreChoix.getMaxQualite());
	}
}